En guide för att implementera tillgÀngliga verktygstips med hover och fokus, vilket sÀkerstÀller anvÀndbarhet för alla anvÀndare.
Implementering av verktygstips: TillgÀnglig information vid hover och fokus
Verktygstips (tooltips) Àr smÄ, kontextuella hjÀlpmeddelanden som visas nÀr en anvÀndare för muspekaren över eller fokuserar pÄ ett element. De kan ge ytterligare information, förtydliga syftet med ett element eller erbjuda tips om hur man anvÀnder en funktion. Verktygstips kan dock lÀtt bli en tillgÀnglighetsmardröm om de inte implementeras korrekt. Denna guide beskriver bÀsta praxis för att skapa verktygstips som Àr anvÀndbara för alla, inklusive anvÀndare med funktionsnedsÀttningar.
Varför tillgÀnglighet Àr viktigt för verktygstips
TillgÀnglighet handlar inte bara om regelefterlevnad; det handlar om att skapa en bÀttre anvÀndarupplevelse för alla. NÀr verktygstips inte Àr tillgÀngliga kan det exkludera anvÀndare som förlitar sig pÄ hjÀlpmedelsteknik som skÀrmlÀsare, tangentbordsnavigering eller röstinmatning. TÀnk pÄ dessa scenarier:
- SkÀrmlÀsaranvÀndare: Om ett verktygstips inte Àr korrekt uppmÀrkt kanske en skÀrmlÀsare inte meddelar dess nÀrvaro eller innehÄll.
- TangentbordsanvÀndare: Om ett verktygstips endast visas vid hover kommer tangentbordsanvÀndare inte att kunna komma Ät det.
- AnvÀndare med motoriska funktionsnedsÀttningar: Precisa musrörelser som krÀvs för hover-interaktioner kan vara utmanande eller omöjliga.
- AnvÀndare med kognitiva funktionsnedsÀttningar: Ett dÄligt timat eller förvirrande verktygstips kan skapa frustration och försvÄra förstÄelsen.
Genom att följa bÀsta praxis för tillgÀnglighet kan vi sÀkerstÀlla att verktygstips förbÀttrar snarare Àn försÀmrar anvÀndarupplevelsen för alla.
Nyckelprinciper för tillgÀngliga verktygstips
Följande principer Àr avgörande för att skapa tillgÀngliga verktygstips:
- Erbjud alternativ Ätkomst: Se till att verktygstips Àr tillgÀngliga via bÄde hover och tangentbordsfokus.
- AnvÀnd ARIA-attribut: AnvÀnd ARIA-attribut (Accessible Rich Internet Applications) för att korrekt identifiera och beskriva verktygstips för hjÀlpmedelsteknik.
- Hantera fokus: Kontrollera vart fokus flyttas nÀr ett verktygstips visas och döljs.
- SÀkerstÀll tillrÀcklig kontrast: Ge tillrÀcklig fÀrgkontrast mellan verktygstipsets text och bakgrund.
- Ge tillrÀckligt med tid: Ge anvÀndarna tillrÀckligt med tid att lÀsa innehÄllet i verktygstipset.
- Gör dem avvisningsbara: TillhandahÄll ett tydligt sÀtt att avvisa verktygstipset.
- Undvik överanvÀndning: AnvÀnd verktygstips sparsamt och endast nÀr det Àr nödvÀndigt.
Implementeringstekniker
1. AnvÀnda hover och fokus
Den mest kritiska aspekten av tillgÀngliga verktygstips Àr att sÀkerstÀlla att de Àr tillgÀngliga för bÄde mus- och tangentbordsanvÀndare. Detta innebÀr att verktygstipset ska visas bÄde vid hover och nÀr elementet fÄr fokus.
HTML:
<a href="#" aria-describedby="tooltip-example">ExempellÀnk</a>
<div id="tooltip-example" role="tooltip" style="display: none;">Detta Àr ett exempel pÄ ett verktygstips.</div>
CSS:
a:hover + div[role="tooltip"],
a:focus + div[role="tooltip"] {
display: block;
position: absolute;
background-color: #f0f0f0;
border: 1px solid #ccc;
padding: 5px;
z-index: 1000; /* SÀkerstÀll att verktygstipset ligger överst */
}
Förklaring:
aria-describedby
: Detta attribut lÀnkar lÀnken till verktygstipselementet med hjÀlp av dess ID. Detta talar om för hjÀlpmedelsteknik att verktygstipset ger ytterligare information om lÀnken.role="tooltip"
: Denna ARIA-roll identifierar elementet som ett verktygstips.- CSS anvÀnder den intilliggande syskonselektorn (
+
) för att visa verktygstipset nÀr lÀnken hovras över eller fokuseras.
JavaScript (avancerad kontroll - valfritt):
Medan CSS kan hantera enkel visning/döljning, möjliggör JavaScript mer robust kontroll, sÀrskilt nÀr verktygstips genereras dynamiskt eller behöver mer komplext beteende.
const link = document.querySelector('a[aria-describedby="tooltip-example"]');
const tooltip = document.getElementById('tooltip-example');
link.addEventListener('focus', () => {
tooltip.style.display = 'block';
});
link.addEventListener('blur', () => {
tooltip.style.display = 'none';
});
link.addEventListener('mouseover', () => {
tooltip.style.display = 'block';
});
link.addEventListener('mouseout', () => {
tooltip.style.display = 'none';
});
2. AnvÀnda ARIA-attribut
ARIA-attribut Àr avgörande för att ge semantisk information till hjÀlpmedelsteknik. HÀr Àr en genomgÄng av viktiga attribut:
aria-describedby
: Som nÀmnts tidigare etablerar detta attribut förhÄllandet mellan det utlösande elementet och verktygstipselementet.role="tooltip"
: Detta attribut definierar explicit elementet som ett verktygstips.aria-hidden="true"
/aria-hidden="false"
: AnvÀnd dessa för att indikera om verktygstipset för nÀrvarande Àr synligt för hjÀlpmedelsteknik. NÀr verktygstipset Àr dolt, stÀll inaria-hidden="true"
. NÀr det Àr synligt, stÀll inaria-hidden="false"
. Detta Àr sÀrskilt viktigt nÀr du anvÀnder JavaScript för att styra verktygstipsets synlighet.
Exempel:
<button aria-describedby="help-tooltip">Skicka</button>
<div id="help-tooltip" role="tooltip" aria-hidden="true">Klicka hÀr för att skicka formulÀret.</div>
JavaScript (för aria-hidden):
const button = document.querySelector('button[aria-describedby="help-tooltip"]');
const tooltip = document.getElementById('help-tooltip');
button.addEventListener('focus', () => {
tooltip.setAttribute('aria-hidden', 'false');
tooltip.style.display = 'block';
});
button.addEventListener('blur', () => {
tooltip.setAttribute('aria-hidden', 'true');
tooltip.style.display = 'none';
});
button.addEventListener('mouseover', () => {
tooltip.setAttribute('aria-hidden', 'false');
tooltip.style.display = 'block';
});
button.addEventListener('mouseout', () => {
tooltip.setAttribute('aria-hidden', 'true');
tooltip.style.display = 'none';
});
3. Hantera fokus
NÀr ett verktygstips visas ska det generellt sett *inte* stjÀla fokus frÄn det utlösande elementet. Fokus bör ligga kvar pÄ elementet som utlöste verktygstipset. Detta sÀkerstÀller att tangentbordsanvÀndare kan fortsÀtta navigera pÄ sidan utan ovÀntade avbrott.
Det kan dock finnas situationer dÀr du *vill* flytta fokus till verktygstipset, sÀrskilt om det innehÄller interaktiva element (t.ex. lÀnkar, knappar). I det hÀr fallet, se till att:
- Verktygstipset Àr visuellt distinkt för att indikera att det har fokus.
- Det finns ett tydligt sÀtt att Äterföra fokus till det ursprungliga utlösande elementet (t.ex. en stÀngningsknapp i verktygstipset).
I de flesta fall Àr det att föredra att undvika fokushantering inom sjÀlva verktygstipset för enkelhetens och anvÀndbarhetens skull.
4. SÀkerstÀlla tillrÀcklig kontrast
FÀrgkontrast Àr avgörande för lÀsbarheten. Se till att textfÀrgen i dina verktygstips har tillrÀcklig kontrast mot bakgrundsfÀrgen. Web Content Accessibility Guidelines (WCAG) rekommenderar ett kontrastförhÄllande pÄ minst 4.5:1 för normal text och 3:1 for stor text (18pt eller 14pt fet).
AnvÀnd onlineverktyg för kontrastkontroll för att verifiera att dina fÀrgval uppfyller tillgÀnglighetsstandarder. Exempel pÄ kontrastkontrollverktyg inkluderar:
- WebAIM Contrast Checker: https://webaim.org/resources/contrastchecker/
- Coolors: https://coolors.co/contrast-checker
Exempel (bra kontrast):
.tooltip {
background-color: #000;
color: #fff;
}
Exempel (dÄlig kontrast):
.tooltip {
background-color: #fff;
color: #eee;
}
5. Ge tillrÀckligt med tid
AnvĂ€ndare behöver tillrĂ€ckligt med tid för att lĂ€sa innehĂ„llet i verktygstipset. Undvik verktygstips som försvinner för snabbt. Ăven om det inte finns nĂ„got magiskt tal, sikta pĂ„ en minsta visningstid pĂ„ nĂ„gra sekunder. Dessutom bör verktygstipset förbli synligt sĂ„ lĂ€nge anvĂ€ndaren hovrar över eller har fokuserat pĂ„ det utlösande elementet. Om du behöver avvisa verktygstipset pĂ„ grund av andra hĂ€ndelser, ge en indikation pĂ„ att verktygstipset kommer att stĂ€ngas.
Om innehÄllet i verktygstipset Àr lÄngt, övervÀg att ge anvÀndaren ett sÀtt att manuellt avvisa det (t.ex. en stÀngningsknapp eller genom att trycka pÄ Escape-tangenten).
6. Göra dem avvisningsbara
Ăven om verktygstips ofta försvinner automatiskt nĂ€r anvĂ€ndaren flyttar musen eller tar bort fokus, Ă€r det god praxis att tillhandahĂ„lla ett tydligt sĂ€tt att avvisa dem manuellt, sĂ€rskilt för lĂ„nga verktygstips eller sĂ„dana som innehĂ„ller interaktiva element.
Metoder för att avvisa verktygstips:
- StÀngningsknapp: Inkludera en visuellt framtrÀdande stÀngningsknapp i verktygstipset.
- Escape-tangenten: LÄt anvÀndare avvisa verktygstipset genom att trycka pÄ Escape-tangenten.
- Klicka utanför: Avvisa verktygstipset nÀr anvÀndaren klickar nÄgonstans utanför verktygstipset och det utlösande elementet. (AnvÀnd med försiktighet eftersom det kan vara störande).
Exempel (stÀngningsknapp):
<div id="my-tooltip" role="tooltip" aria-hidden="true">
Detta Àr mitt verktygstipsinnehÄll.
<button onclick="hideTooltip()">StÀng</button>
</div>
Exempel (Escape-tangenten):
document.addEventListener('keydown', function(event) {
if (event.key === 'Escape') {
hideTooltip(); // ErsÀtt med din faktiska funktion för att dölja verktygstipset
}
});
7. Undvika överanvÀndning
Verktygstips bör anvĂ€ndas sparsamt och endast nĂ€r de ger verkligt anvĂ€ndbar information. ĂveranvĂ€ndning av verktygstips kan belamra grĂ€nssnittet, distrahera anvĂ€ndare och skapa en frustrerande upplevelse.
Alternativ till verktygstips:
- Tydliga etiketter: AnvÀnd tydliga och beskrivande etiketter för formulÀrfÀlt, knappar och lÀnkar.
- Kontextuell hjÀlp: TillhandahÄll hjÀlptext direkt i grÀnssnittet, nÀra de relevanta elementen.
- HjÀlpdokumentation: LÀnka till omfattande hjÀlpdokumentation för mer komplexa funktioner.
Avancerade övervÀganden
Dynamiskt innehÄll
Om ditt verktygstipsinnehÄll genereras dynamiskt (t.ex. laddas frÄn ett API eller uppdateras baserat pÄ anvÀndarinmatning), se till att aria-describedby
-attributet och verktygstipsets synlighet uppdateras dÀrefter. AnvÀnd JavaScript för att hantera dessa uppdateringar.
Positionering
ĂvervĂ€g noggrant positioneringen av dina verktygstips. Undvik att placera dem pĂ„ ett sĂ€tt som skymmer viktigt innehĂ„ll eller orsakar layoutförskjutningar. Var medveten om olika skĂ€rmstorlekar och upplösningar, och anvĂ€nd CSS för att sĂ€kerstĂ€lla att verktygstips alltid Ă€r synliga inom visningsomrĂ„det.
Mobila enheter
Verktygstips förlitar sig traditionellt pÄ hover-interaktioner, vilka inte Àr tillgÀngliga pÄ pekskÀrmsenheter. För mobila enheter, övervÀg att anvÀnda alternativa interaktionsmetoder, sÄsom:
- Tryck: Visa verktygstipset nÀr anvÀndaren trycker pÄ elementet.
- LÄngtryck: Visa verktygstipset nÀr anvÀndaren gör ett lÄngtryck pÄ elementet.
- Visa vid fokus: Visa nÀr elementet fÄr fokus. Detta kan uppnÄs med JavaScript, genom att kontrollera för pekskÀrmsstöd (t.ex. `('ontouchstart' in window)`) och Àndra visningsbeteendet dÀrefter.
Testa dina verktygstips
Testa dina verktygstips noggrant för att sÀkerstÀlla att de Àr tillgÀngliga för alla anvÀndare. AnvÀnd en kombination av manuell testning och automatiserade tillgÀnglighetstestverktyg.
Testmetoder:
- Tangentbordsnavigering: Verifiera att verktygstips Àr tillgÀngliga med tangentbordet.
- SkÀrmlÀsartestning: AnvÀnd en skÀrmlÀsare för att sÀkerstÀlla att verktygstips lÀses upp korrekt.
- FÀrgkontrastanalys: AnvÀnd ett verktyg för fÀrgkontrastkontroll för att verifiera tillrÀcklig kontrast.
- Mobiltestning: Testa verktygstips pÄ olika mobila enheter och skÀrmstorlekar.
- Automatiserad tillgÀnglighetstestning: AnvÀnd verktyg som axe DevTools, WAVE eller Lighthouse för att identifiera potentiella tillgÀnglighetsproblem.
Internationalisering (i18n) och lokalisering (l10n)
NÀr du utvecklar verktygstips för en global publik, ha internationalisering och lokalisering i Ätanke:
- Textriktning: Stöd bÄde vÀnster-till-höger (LTR) och höger-till-vÀnster (RTL) textriktningar. AnvÀnd logiska CSS-egenskaper (t.ex. `margin-inline-start`, `margin-inline-end`) istÀllet för fysiska egenskaper (t.ex. `margin-left`, `margin-right`) för layout.
- SprÄkspecifika översÀttningar: TillhandahÄll översÀttningar av verktygstipsinnehÄll för olika sprÄk.
- Datum- och tidsformat: Anpassa datum- och tidsformat till anvÀndarens locale.
- Nummerformat: AnvÀnd lÀmpliga nummerformat för olika regioner (t.ex. decimalavgrÀnsare, tusentalsavgrÀnsare).
Slutsats
Att implementera tillgÀngliga verktygstips krÀver noggrann planering och uppmÀrksamhet pÄ detaljer. Genom att följa principerna och teknikerna som beskrivs i denna guide kan du skapa verktygstips som Àr anvÀndbara för alla, oavsett deras förmÄgor. Kom ihÄg att tillgÀnglighet Àr en pÄgÄende process, sÄ fortsÀtt att testa och förfina dina verktygstips för att sÀkerstÀlla att de uppfyller behoven hos alla dina anvÀndare.